﻿using BusinessLogicLayer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PresentationLayer
{
    public partial class CapNhatTTMuonSachForm : Form
    {
        public int MaPM { get; set; }
        public CapNhatDS PhuongThucCapNhatDS { get; set; }

        public CapNhatTTMuonSachForm()
        {
            InitializeComponent();
        }

        private void CapNhatTTMuonSachForm_Load(object sender, EventArgs e)
        {
            if (MaPM == 0)
                btnCapNhatMS.Enabled = false;
            else
                btnThemMS.Enabled = false;
            ActionResultAsList<DocGia> rs = new DocGiaManager().LayDGTheoTrangThai("Hoạt động");
            if (rs.Success)
            {
                foreach (var item in rs.ObjectList)
                {
                    cbbMaDG.Items.Add(item.MaDocGia);
                    cbbMaDG.AutoCompleteCustomSource.Add(item.MaDocGia);
                }
            }
            else
                MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + rs.Exceptions[rs.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private ValidateResult KiemTraDieuKien(string maDG)
        {
            ValidateResult rs = new ValidateResult();
            ValidateResult vlQuaSL = new MuonSachManager().KTMuonQuaSL(maDG);
            ValidateResult vlPhat = new PhatManager().KiemTraDGBiPhat(maDG);
            if (!vlPhat.Valid)
            {
                rs.AddMessage(vlPhat.Messages[0]);
            }
            if (!vlQuaSL.Valid)
            {
                rs.AddMessage(vlQuaSL.Messages[0]);
            }
            return rs;
        }

        private void btnThemMS_Click(object sender, EventArgs e)
        {
            string maDG = cbbMaDG.Text;
            if (!cbbMaDG.Items.Contains(maDG))
                cbbMaDG.SelectedIndex = 0;
            maDG = cbbMaDG.SelectedItem.ToString();
            if (MessageBox.Show(String.Format("Bạn muốn thêm phiếu mượn cho độc giả mã {0}?", maDG), "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                ValidateResult vr = KiemTraDieuKien(maDG);
                if (!vr.Valid)
                    MessageBox.Show("Không hợp lệ!\n\nChi tiết:\n" + vr, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                {
                    PhieuMuon pm = new PhieuMuon(maDG, DateTime.Now);
                    ActionResult rs = new MuonSachManager().ThemPhieuMuon(ref pm);
                    if (rs.Success)
                    {
                        if (PhuongThucCapNhatDS != null)
                            PhuongThucCapNhatDS(LoaiHanhDong.Them, pm);
                        MessageBox.Show("Thêm thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                        MessageBox.Show("Thêm thất bại!\n\nChi tiết: " + rs.Exceptions[rs.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnCapNhatMS_Click(object sender, EventArgs e)
        {
            string maDG = cbbMaDG.Text;
            if (!cbbMaDG.Items.Contains(maDG))
                cbbMaDG.SelectedIndex = 0;
            maDG = cbbMaDG.SelectedItem.ToString();
            if (MessageBox.Show(String.Format("Bạn muốn cập nhật phiếu mượn với độc giả mã {0}?", maDG), "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                ValidateResult vr = KiemTraDieuKien(maDG);
                if (!vr.Valid)
                    MessageBox.Show("Không hợp lệ!\n\nChi tiết:\n" + vr, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                {
                    PhieuMuon pm = new PhieuMuon(MaPM, maDG, DateTime.Now);
                    ActionResult rs = new MuonSachManager().CapNhatPhieuMuon(ref pm);
                    if (rs.Success)
                    {
                        if (PhuongThucCapNhatDS != null)
                            PhuongThucCapNhatDS(LoaiHanhDong.CapNhat, pm);
                        MessageBox.Show("Cập nhật thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại!\n\nChi tiết: " + rs.Exceptions[rs.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
    }
}
